﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;

namespace SatisAktarim
{
    public enum EvrakTipleri : byte
    {

        ToptanAlisIrsaliyesi,
        PerakendeAlisIrsaliyesi,

        ToptanAlisIadeIrsaliyesi,
        PerakendeAlisIadeIrsaliyesi,

        ToptanSatisIrsaliyesi,
        PerakendeSatisIrsaliyesi,

        ToptanSatisIadeIrsaliyesi,
        PerakendeSatisIadeIrsaliyesi,

        GelenDepoSevk,
        GidenDepoSevk,

        AlinanSiparis,
        VerilenSiparis,
        SubeSiparis,

        ToptanSatisFaturasi,
        PerakendeSatisFaturasi,

        ToptanSatisIadeFaturasi,
        PerakendeSatisIadeFaturasi,

        Tahsilat,

        HizmetFaturasi
    }

    public class Mikro
    {
        private byte[] EvrakCins(EvrakTipleri cins)
        {
            byte[] sonuc = new byte[4];
            switch (cins)
            {
                case EvrakTipleri.HizmetFaturasi:
                    sonuc[0] = 0;
                    sonuc[1] = 8;
                    sonuc[2] = 0;
                    sonuc[3] = 63;
                    break;
                case EvrakTipleri.ToptanAlisIrsaliyesi:
                    sonuc[0] = 0;
                    sonuc[1] = 0;
                    sonuc[2] = 0;
                    sonuc[3] = 13;
                    break;
                case EvrakTipleri.PerakendeAlisIrsaliyesi:
                    sonuc[0] = 0;
                    sonuc[1] = 1;
                    sonuc[2] = 0;
                    sonuc[3] = 13;
                    break;
                case EvrakTipleri.ToptanAlisIadeIrsaliyesi:
                    sonuc[0] = 1;
                    sonuc[1] = 0;
                    sonuc[2] = 1;
                    sonuc[3] = 1;
                    break;
                case EvrakTipleri.PerakendeAlisIadeIrsaliyesi:
                    sonuc[0] = 1;
                    sonuc[1] = 1;
                    sonuc[2] = 1;
                    sonuc[3] = 1;
                    break;
                case EvrakTipleri.ToptanSatisIrsaliyesi:
                    sonuc[0] = 1;
                    sonuc[1] = 0;
                    sonuc[2] = 0;
                    sonuc[3] = 1;
                    break;
                case EvrakTipleri.PerakendeSatisIrsaliyesi:
                    sonuc[0] = 1;
                    sonuc[1] = 1;
                    sonuc[2] = 0;
                    sonuc[3] = 1;
                    break;
                case EvrakTipleri.ToptanSatisIadeIrsaliyesi:
                    sonuc[0] = 0;
                    sonuc[1] = 0;
                    sonuc[2] = 1;
                    sonuc[3] = 13;
                    break;
                case EvrakTipleri.PerakendeSatisIadeIrsaliyesi:
                    sonuc[0] = 0;
                    sonuc[1] = 1;
                    sonuc[2] = 1;
                    sonuc[3] = 13;
                    break;
                case EvrakTipleri.AlinanSiparis:
                    sonuc[0] = 0;
                    sonuc[1] = 0;
                    sonuc[2] = 0;
                    sonuc[3] = 0;
                    break;
                case EvrakTipleri.VerilenSiparis:
                    sonuc[0] = 1;
                    sonuc[1] = 0;
                    sonuc[2] = 0;
                    sonuc[3] = 0;
                    break;
                case EvrakTipleri.GidenDepoSevk:
                case EvrakTipleri.GelenDepoSevk:
                    sonuc[0] = 2;
                    sonuc[1] = 6;
                    sonuc[2] = 0;
                    sonuc[3] = 2;
                    break;
                case EvrakTipleri.ToptanSatisFaturasi:
                    break;
                case EvrakTipleri.Tahsilat:
                    break;
                case EvrakTipleri.ToptanSatisIadeFaturasi:
                    break;
                default:
                    break;
            }
            return sonuc;
        }
        public int MaxEvrakNo(EvrakTipleri tip, String seri, int baslangic, string cnnString)
        {
            byte[] dizi = this.EvrakCins(tip);
            int sira = 1;
            using (SqlConnection cn = new SqlConnection(cnnString))
            {
                cn.Open();
                using (SqlCommand cmd = new SqlCommand("", cn))
                {
                    switch (tip)
                    {
                        case EvrakTipleri.HizmetFaturasi:
                        case EvrakTipleri.PerakendeSatisIadeFaturasi:
                        case EvrakTipleri.PerakendeSatisFaturasi:
                        case EvrakTipleri.ToptanSatisFaturasi:
                        case EvrakTipleri.ToptanSatisIadeFaturasi:
                        case EvrakTipleri.Tahsilat:
                            cmd.CommandText = string.Format("exec sp_executesql N'SELECT     ISNULL(MAX(cha_evrakno_sira),0) + 1 FROM         CARI_HESAP_HAREKETLERI WITH (NOLOCK) WHERE     (cha_tip = {1}) AND (cha_normal_Iade = {2}) AND (cha_evrak_tip = {3}) AND (cha_evrakno_seri = ''{0}'') AND (cha_evrakno_sira >{4})'", seri, dizi[0], dizi[2], dizi[3], baslangic);
                            break;
                        case EvrakTipleri.AlinanSiparis:
                            cmd.CommandText = string.Format("exec sp_executesql N'SELECT     ISNULL(MAX(sip_evrakno_sira),0) + 1 FROM         SIPARISLER WITH (NOLOCK) WHERE     (sip_tip = 0) AND (sip_cins = 0) AND (sip_evrakno_seri = ''{0}'') and (sip_evrakno_sira > {1})'", seri, baslangic);
                            break;
                        case EvrakTipleri.VerilenSiparis:
                            cmd.CommandText = string.Format("exec sp_executesql N'SELECT     ISNULL(MAX(sip_evrakno_sira),0) + 1 FROM         SIPARISLER WITH (NOLOCK) WHERE     (sip_tip = 1) AND (sip_cins = 0) AND (sip_evrakno_seri = ''{0}'')  and (sip_evrakno_sira > {1})'", seri, baslangic);
                            break;
                        case EvrakTipleri.GidenDepoSevk:
                        case EvrakTipleri.GelenDepoSevk:
                            cmd.CommandText = string.Format("exec sp_executesql N'SELECT     ISNULL(MAX(sth_evrakno_sira),0) + 1 as sira  FROM         STOK_HAREKETLERI WITH (NOLOCK, INDEX=NDX_STOK_HAREKETLERI_05) WHERE     (sth_tip = 2) AND (sth_evraktip = 2) AND (sth_evrakno_seri = ''{0}'') and (sth_evrakno_sira > {1})'", seri, baslangic);
                            break;
                        case EvrakTipleri.PerakendeAlisIadeIrsaliyesi:
                        case EvrakTipleri.PerakendeAlisIrsaliyesi:
                        case EvrakTipleri.PerakendeSatisIadeIrsaliyesi:
                        case EvrakTipleri.PerakendeSatisIrsaliyesi:
                        case EvrakTipleri.ToptanAlisIadeIrsaliyesi:
                        case EvrakTipleri.ToptanAlisIrsaliyesi:
                        case EvrakTipleri.ToptanSatisIadeIrsaliyesi:
                        case EvrakTipleri.ToptanSatisIrsaliyesi:
                            cmd.CommandText = string.Format("exec sp_executesql N'SELECT     ISNULL(MAX(sth_evrakno_sira),0) + 1 as sira  FROM         STOK_HAREKETLERI WITH (NOLOCK, INDEX=NDX_STOK_HAREKETLERI_05) WHERE  (sth_evraktip = {1}) AND (sth_evrakno_seri = ''{0}'') and (sth_evrakno_sira > {2})'", seri, dizi[3], baslangic);
                            break;
                    }

                    sira = Convert.ToInt32(cmd.ExecuteScalar());
                }
                cn.Close();
            }
            return sira;
        }
        public int MaxEvrakSatir(EvrakTipleri tip, String seri, int EvrakSira, string cnnString)
        {
            byte[] dizi = this.EvrakCins(tip);
            int sonuc = 1;
            using (SqlConnection cn = new SqlConnection(cnnString))
            {
                cn.Open();
                using (SqlCommand cmd = new SqlCommand("", cn))
                {
                    switch (tip)
                    {
                        case EvrakTipleri.HizmetFaturasi:
                        case EvrakTipleri.PerakendeSatisIadeFaturasi:
                        case EvrakTipleri.PerakendeSatisFaturasi:
                        case EvrakTipleri.ToptanSatisFaturasi:
                        case EvrakTipleri.ToptanSatisIadeFaturasi:
                        case EvrakTipleri.Tahsilat:
                            cmd.CommandText = string.Format("exec sp_executesql N'SELECT     ISNULL(MAX(cha_satir_no),0) + 1 FROM         CARI_HESAP_HAREKETLERI WITH (NOLOCK) WHERE     (cha_tip = {1}) AND (cha_normal_Iade = {2}) AND (cha_evrak_tip = {3}) AND (cha_evrakno_seri = ''{0}'') AND (cha_evrakno_sira={4})'", seri, dizi[0], dizi[2], dizi[3], EvrakSira);
                            break;
                        case EvrakTipleri.AlinanSiparis:
                            cmd.CommandText = string.Format("exec sp_executesql N'SELECT     ISNULL(MAX(sip_satirno),0) + 1 FROM         SIPARISLER WITH (NOLOCK) WHERE     (sip_tip = 0) AND (sip_cins = 0) AND (sip_evrakno_seri = ''{0}'') AND (sip_evrakno_sira={1})'", seri, EvrakSira);
                            break;
                        case EvrakTipleri.VerilenSiparis:
                            cmd.CommandText = string.Format("exec sp_executesql N'SELECT     ISNULL(MAX(sip_satirno),0) + 1 FROM         SIPARISLER WITH (NOLOCK) WHERE     (sip_tip = 1) AND (sip_cins = 0) AND (sip_evrakno_seri = ''{0}'') AND (sip_evrakno_sira={1})'", seri, EvrakSira);
                            break;
                        case EvrakTipleri.GidenDepoSevk:
                        case EvrakTipleri.GelenDepoSevk:
                            cmd.CommandText = string.Format("exec sp_executesql N'SELECT     ISNULL(MAX(sth_satirno),0) + 1 as sira  FROM         STOK_HAREKETLERI WITH (NOLOCK, INDEX=NDX_STOK_HAREKETLERI_05) WHERE     (sth_tip = 2) AND (sth_evraktip = 2) AND (sth_evrakno_seri = ''{0}'') AND (sth_evrakno_sira={1})'", seri, EvrakSira);
                            break;
                        case EvrakTipleri.PerakendeAlisIadeIrsaliyesi:
                        case EvrakTipleri.PerakendeAlisIrsaliyesi:
                        case EvrakTipleri.PerakendeSatisIadeIrsaliyesi:
                        case EvrakTipleri.PerakendeSatisIrsaliyesi:
                        case EvrakTipleri.ToptanAlisIadeIrsaliyesi:
                        case EvrakTipleri.ToptanAlisIrsaliyesi:
                        case EvrakTipleri.ToptanSatisIadeIrsaliyesi:
                        case EvrakTipleri.ToptanSatisIrsaliyesi:
                            cmd.CommandText = string.Format("exec sp_executesql N'SELECT     ISNULL(MAX(sth_satirno),0) + 1 as sira  FROM         STOK_HAREKETLERI WITH (NOLOCK, INDEX=NDX_STOK_HAREKETLERI_05) WHERE  (sth_evraktip = {1}) AND (sth_evrakno_seri = ''{0}'') AND (sth_evrakno_sira={2})'", seri, dizi[3], EvrakSira);
                            break;
                    }

                    sonuc = Convert.ToInt32(cmd.ExecuteScalar());
                }
                cn.Close();
            }
            return sonuc;
        }
        public int SharEkle(Document evrak, SqlTransaction trn, string Seri, int Sira, ref int Satir, string SrmMerkezKodu, int MagazaNo)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append(" if exists(SELECT     sth_evrakno_seri  FROM         STOK_HAREKETLERI  WHERE     (sth_evrakno_seri = @Seri) AND (sth_evrakno_sira =@Sira) AND (sth_satirno = @Satir) AND (sth_evraktip = @Evrak_Tip) AND (sth_tip=@Tip) AND (sth_cins=@Cins) and (sth_normal_iade=@Normal_iade)) ");
            sb.Append(" 		UPDATE STOK_HAREKETLERI SET ");
            sb.Append(" 							  sth_lastup_user=@kullanici, sth_lastup_date=@crDate, sth_tarih=@Evrak_Tarih, sth_tip=@Tip, sth_cins=@Cins, sth_normal_iade=@Normal_iade, sth_belge_tarih=@Evrak_Tarih,  ");
            sb.Append(" 							  sth_stok_kod=@Stok_kod, sth_cari_kodu=@Cari_kod, sth_plasiyer_kodu=@plasiyer, sth_kur_tarihi='1899-12-30 00:00:00', sth_miktar=@Miktar, sth_miktar2=@Miktar, sth_birim_pntr=1, sth_tutar=@yekun, sth_iskonto1=@isk1_tutar, sth_iskonto2=@isk2_tutar, sth_iskonto3=@isk3_tutar,  ");
            sb.Append(" 							  sth_iskonto4=@isk4_tutar, sth_iskonto5=@isk5_tutar, sth_vergi_pntr=@Kdv,sth_vergi=@kdv_tutar, sth_odeme_op=@odeme, sth_sip_recid_dbcno=@norm_sip_dbc, sth_sip_recid_recno=@norm_sip_rec, sth_giris_depo_no=@GirisDepo, sth_cikis_depo_no=@CikisDepo,  ");
            sb.Append(" 							  sth_malkbl_sevk_tarihi=@Evrak_Tarih, sth_cari_srm_merkezi=@srmerkez, sth_stok_srm_merkezi=@srmerkez, sth_fis_tarihi='1899-12-30 00:00:00', sth_maliyet_ana=@Fiyat, sth_maliyet_alternatif=@Fiyat, sth_maliyet_orjinal=@Fiyat, sth_vardiya_tarihi='1899-12-30 00:00:00',sth_subesip_recid_dbcno=@sube_sip_dbc,sth_subesip_recid_recno=@sube_sip_rec,sth_belge_no=@belge_no, ");
            sb.Append(" 							  sth_firmano=@firma_no,sth_subeno=@sube_no,sth_proje_kodu=@proje ");
            sb.Append(" 		WHERE     (sth_evrakno_seri = @Seri) AND (sth_evrakno_sira =@Sira) AND (sth_satirno = @Satir) AND (sth_evraktip = @Evrak_Tip AND (sth_tip=@Tip) AND (sth_cins=@Cins) and (sth_normal_iade=@Normal_iade)) ");
            sb.Append(" else ");
            sb.Append(" 		INSERT INTO STOK_HAREKETLERI ");
            sb.Append(" 		 (sth_RECid_DBCno,sth_RECid_RECno,sth_SpecRECno,sth_iptal,sth_fileid,sth_hidden,sth_kilitli,sth_degisti,sth_checksum,sth_create_user,sth_create_date,sth_lastup_user,sth_lastup_date,sth_special1,sth_special2,sth_special3,sth_firmano,sth_subeno,sth_tarih,sth_tip,sth_cins,sth_normal_iade,sth_evraktip,sth_evrakno_seri,sth_evrakno_sira,sth_satirno,sth_belge_no,sth_belge_tarih,sth_stok_kod,sth_isk_mas1,sth_isk_mas2,sth_isk_mas3,sth_isk_mas4,sth_isk_mas5,sth_isk_mas6,sth_isk_mas7,sth_isk_mas8,sth_isk_mas9,sth_isk_mas10,sth_sat_iskmas1,sth_sat_iskmas2,sth_sat_iskmas3,sth_sat_iskmas4,sth_sat_iskmas5,sth_sat_iskmas6,sth_sat_iskmas7,sth_sat_iskmas8,sth_sat_iskmas9,sth_sat_iskmas10,sth_pos_satis,sth_cari_cinsi,sth_cari_kodu,sth_cari_grup_no,sth_isemri_gider_kodu,sth_ismerkezi_kodu,sth_plasiyer_kodu,sth_kur_tarihi,sth_har_doviz_cinsi,sth_har_doviz_kuru,sth_alt_doviz_kuru,sth_stok_doviz_cinsi,sth_stok_doviz_kuru,sth_miktar,sth_miktar2,sth_birim_pntr,sth_tutar,sth_iskonto1,sth_iskonto2,sth_iskonto3,sth_iskonto4,sth_iskonto5,sth_iskonto6,sth_masraf1,sth_masraf2,sth_masraf3,sth_masraf4,sth_vergi_pntr,sth_vergi,sth_masraf_vergi_pntr,sth_masraf_vergi,sth_netagirlik,sth_odeme_op,sth_aciklama,sth_sip_recid_dbcno,sth_sip_recid_recno,sth_fat_recid_dbcno,sth_fat_recid_recno,sth_giris_depo_no,sth_cikis_depo_no,sth_malkbl_sevk_tarihi,sth_cari_srm_merkezi,sth_stok_srm_merkezi,sth_fis_tarihi,sth_fis_sirano,sth_vergisiz_fl,sth_maliyet_ana,sth_maliyet_alternatif,sth_maliyet_orjinal,sth_adres_no,sth_parti_kodu,sth_lot_no,sth_kons_recid_dbcno,sth_kons_recid_recno,sth_vardiya_tarihi,sth_vardiya_no,sth_satistipi,sth_proje_kodu,sth_ihracat_kredi_kodu,sth_exim_kodu,sth_otv_pntr,sth_otv_vergi,sth_bkm_recid_dbcno,sth_bkm_recid_recno,sth_karsikons_recid_dbcno,sth_karsikons_recid_recno,sth_iade_evrak_seri,sth_iade_evrak_sira,sth_diib_belge_no,sth_diib_satir_no,sth_mensey_ulke_tipi,sth_mensey_ulke_kodu,sth_brutagirlik,sth_halrehmiktari,sth_halrehfiyati,sth_halsandikmiktari,sth_halsandikfiyati,sth_halsandikkdvtutari,sth_disticaret_turu,sth_otvtutari,sth_otvvergisiz_fl,sth_direkt_iscilik_1,sth_direkt_iscilik_2,sth_direkt_iscilik_3,sth_direkt_iscilik_4,sth_direkt_iscilik_5,sth_genel_uretim_1,sth_genel_uretim_2,sth_genel_uretim_3,sth_genel_uretim_4,sth_genel_uretim_5,sth_yat_tes_kodu,sth_oiv_pntr,sth_oiv_vergi,sth_oivvergisiz_fl,sth_subesip_recid_dbcno,sth_subesip_recid_recno) ");
            sb.Append(" 		VALUES (0,-1,0,0,16,0,0,0,0,@kullanici,@crDate,@kullanici,@crDate,'','','',@firma_no,@sube_no,@Evrak_Tarih,@Tip,@Cins,@Normal_iade,@Evrak_Tip,@Seri,@Sira,@Satir,@belge_no,@Evrak_Tarih,@Stok_kod,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,@Cari_kod,0,'','',@plasiyer,'1899-12-30 00:00:00',0,1,1,0,1, @Miktar  , @Miktar  ,1, @yekun   ,@isk1_tutar,@isk2_tutar,@isk3_tutar,@isk4_tutar,@isk5_tutar,0,0,0,0,0,@Kdv,@kdv_tutar,0,0,0,@odeme,'',@norm_sip_dbc,@norm_sip_rec,0,0,@GirisDepo,@CikisDepo,@Evrak_Tarih,@srmerkez,@srmerkez, '1899-12-30 00:00:00',0,0, @Fiyat  , @Fiyat  , @Fiyat  ,1,'',0,0,0,'1899-12-30 00:00:00',0,0,@proje,'','',0,0,0,0,0,0,'',0,'',0,0,'',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'',0,0,0,@sube_sip_dbc,@sube_sip_rec) ");
            sb.Append(";update STOK_HAREKETLERI set sth_RECid_RECno=sth_RECno where sth_RECid_RECno=-1");

            DateTime defaultTarih = new DateTime(1899, 12, 31);
            try
            {
                using (SqlCommand cmd = new SqlCommand("", trn.Connection))
                {
                    cmd.Transaction = trn;
                    byte[] tipCins = EvrakCins(EvrakTipleri.PerakendeSatisIrsaliyesi);

                    cmd.Parameters.Add("@Tip", SqlDbType.Int);
                    cmd.Parameters.Add("@Cins", SqlDbType.Int);
                    cmd.Parameters.Add("@Normal_iade", SqlDbType.Int);
                    cmd.Parameters.Add("@Evrak_Tip", SqlDbType.Int);
                    cmd.Parameters.Add("@Evrak_Tarih", SqlDbType.DateTime);
                    cmd.Parameters.Add("@Seri", SqlDbType.VarChar);
                    cmd.Parameters.Add("@Sira", SqlDbType.Int);
                    cmd.Parameters.Add("@crDate", SqlDbType.DateTime);
                    cmd.Parameters.Add("@Cari_kod", SqlDbType.VarChar);
                    cmd.Parameters.Add("@plasiyer", SqlDbType.VarChar);
                    cmd.Parameters.Add("@srmerkez", SqlDbType.VarChar);
                    cmd.Parameters.Add("@kullanici", SqlDbType.VarChar);
                    cmd.Parameters.Add("@GirisDepo", SqlDbType.Int);
                    cmd.Parameters.Add("@CikisDepo", SqlDbType.Int);
                    cmd.Parameters.Add("@odeme", SqlDbType.Int);
                    cmd.Parameters.Add("@belge_no", SqlDbType.VarChar);
                    cmd.Parameters.Add("@firma_no", SqlDbType.Int);
                    cmd.Parameters.Add("@sube_no", SqlDbType.Int);
                    cmd.Parameters.Add("@proje", SqlDbType.VarChar);
                    cmd.Parameters.Add("@Satir", SqlDbType.Int);
                    cmd.Parameters.Add("@Stok_kod", SqlDbType.VarChar);
                    cmd.Parameters.Add("@Miktar", SqlDbType.Decimal);
                    cmd.Parameters.Add("@yekun", SqlDbType.Decimal);
                    cmd.Parameters.Add("@isk1_tutar", SqlDbType.Decimal);
                    cmd.Parameters.Add("@isk2_tutar", SqlDbType.Decimal);
                    cmd.Parameters.Add("@isk3_tutar", SqlDbType.Decimal);
                    cmd.Parameters.Add("@isk4_tutar", SqlDbType.Decimal);
                    cmd.Parameters.Add("@isk5_tutar", SqlDbType.Decimal);
                    cmd.Parameters.Add("@Kdv", SqlDbType.Int);
                    cmd.Parameters.Add("@sube_sip_rec", SqlDbType.Int);
                    cmd.Parameters.Add("@sube_sip_dbc", SqlDbType.Int);
                    cmd.Parameters.Add("@norm_sip_rec", SqlDbType.Int);
                    cmd.Parameters.Add("@norm_sip_dbc", SqlDbType.Int);
                    cmd.Parameters.Add("@Fiyat", SqlDbType.Decimal);
                    cmd.Parameters.Add("@kdv_tutar", SqlDbType.Float);

                    foreach (Line row in evrak.Lines)
                    {
                        cmd.CommandText = sb.ToString();
                        cmd.Parameters["@Tip"].Value = tipCins[0];
                        cmd.Parameters["@Cins"].Value = tipCins[1];
                        cmd.Parameters["@Normal_iade"].Value = tipCins[2];
                        cmd.Parameters["@Evrak_Tip"].Value = tipCins[3];
                        cmd.Parameters["@Evrak_Tarih"].Value = new DateTime(evrak.Tarih.Year, evrak.Tarih.Month, evrak.Tarih.Day);
                        cmd.Parameters["@Seri"].Value = Seri;
                        cmd.Parameters["@Sira"].Value = Sira;
                        cmd.Parameters["@crDate"].Value = DateTime.Now;
                        cmd.Parameters["@Cari_kod"].Value = evrak.MusteriNo;
                        cmd.Parameters["@plasiyer"].Value = row.SaticiKodu;
                        cmd.Parameters["@srmerkez"].Value = SrmMerkezKodu;
                        cmd.Parameters["@kullanici"].Value = 0;
                        cmd.Parameters["@GirisDepo"].Value = MagazaNo;
                        cmd.Parameters["@CikisDepo"].Value = MagazaNo;
                        cmd.Parameters["@odeme"].Value = 0;
                        cmd.Parameters["@belge_no"].Value = "";
                        cmd.Parameters["@firma_no"].Value = 0;
                        cmd.Parameters["@sube_no"].Value = 0;
                        cmd.Parameters["@proje"].Value = "";
                        cmd.Parameters["@Satir"].Value = Satir;
                        cmd.Parameters["@Stok_kod"].Value = row.StokKodu;
                        cmd.Parameters["@Miktar"].Value = row.Miktar;
                        cmd.Parameters["@yekun"].Value = row.Toplam - row.KdvToplam;
                        cmd.Parameters["@isk1_tutar"].Value = row.IndirimToplami;
                        cmd.Parameters["@isk2_tutar"].Value = 0;
                        cmd.Parameters["@isk3_tutar"].Value = 0;
                        cmd.Parameters["@isk4_tutar"].Value = 0;
                        cmd.Parameters["@isk5_tutar"].Value = 0;
                        cmd.Parameters["@Kdv"].Value = row.KdvSirasi;
                        cmd.Parameters["@sube_sip_rec"].Value = 0;
                        cmd.Parameters["@sube_sip_dbc"].Value = 0;
                        cmd.Parameters["@norm_sip_rec"].Value = 0;
                        cmd.Parameters["@norm_sip_dbc"].Value = 0;
                        cmd.Parameters["@Fiyat"].Value = row.Fiyat;
                        cmd.Parameters["@kdv_tutar"].Value = row.KdvToplam;
                        cmd.ExecuteNonQuery();
                        Satir++;
                    }
                }
            }
            catch (Exception)
            {
                Satir = -1;
            }
            return Satir;
        }
        public bool EvrakSil(string seri, int baslangic, int bitis, SqlTransaction trn)
        {
            bool sonuc = false;
            StringBuilder sb = new StringBuilder();
            sb.Append("DELETE  FROM         STOK_HAREKETLERI  WHERE     (sth_evrakno_seri = @Seri) AND (sth_evrakno_sira >=@bas and sth_evrakno_sira <=@bit) AND (sth_evraktip = @Evrak_Tip) AND (sth_tip=@Tip) AND (sth_cins=@Cins) and (sth_normal_iade=@Normal_iade)");
            try
            {
                using (SqlCommand cmd = new SqlCommand("", trn.Connection))
                {
                    cmd.Transaction = trn;
                    byte[] tipCins = EvrakCins(EvrakTipleri.PerakendeSatisIrsaliyesi);

                    cmd.Parameters.Add("@Tip", SqlDbType.Int).Value = tipCins[0]; ;
                    cmd.Parameters.Add("@Cins", SqlDbType.Int).Value = tipCins[1]; ;
                    cmd.Parameters.Add("@Normal_iade", SqlDbType.Int).Value = tipCins[2];
                    cmd.Parameters.Add("@Evrak_Tip", SqlDbType.Int).Value = tipCins[3];
                    cmd.Parameters.Add("@Seri", SqlDbType.VarChar).Value = seri;
                    cmd.Parameters.Add("@bas", SqlDbType.Int).Value = baslangic;
                    cmd.Parameters.Add("@bit", SqlDbType.Int).Value = bitis;
                    cmd.ExecuteNonQuery();
                }
                sonuc = true;
            }
            catch (Exception)
            {
                sonuc = false;
            }
            return sonuc;
        }
    }
}
